package com.huawei.mapreduce.mrsort;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Partitioner;

/**
 \* 自定义分区
 */

public class DefinedPartition extends Partitioner<CombinationKey, IntWritable> {
    /**
     \* 数据输入来源：map输出 我们这里根据组合键的第一个值作为分区 如果不自定义分区的话，MapReduce会根据默认的Hash分区方法 将整个组合键相等的分到一个分区中，这样的话显然不是我们要的效果
     \* @param key map输出键值
     \* @param value map输出value值
     \* @param numPartitions 分区总数，即reduce task个数
     */
    public int getPartition(CombinationKey key, IntWritable value, int numPartitions) {
        if (key.getFirstKey().toString().endsWith("bigdata")){
            return 0;
        } else if (key.getFirstKey().toString().endsWith("zjhw")){
            return 1;
        } else {
            return 2;
        }
    }
}